#! -*- coding = utf-8 -*-
l1 = []
print(l1)
l2 = ['a','b','c','d','e','f']
print(l2)
l3 = list()
print(l3)
print (type(l3))

# 嵌套
la = ['abc',['a','b','c']]
print(la)
#索引，下标
l4 = ['x','y','z',1,2,3,4,5,'e','r','g','h']
print(l4[2])
print(l4[-1])
# 切片
print(l4[:4])
# 步长
print(l4[::2])
# index找到索引值
print(l4.index(3))


# 增加，追加到最后一位  注意每次职能增加一个值
l4.append('b')
print(l4)
# 插入
l4.insert(2,'alibaba')
print(l4)

# 修改
l4[2]='tengxu'
print(l4)
# 连续修改几个值
l4[2:3]='wangyi'
print(l4)

#删除方式一：pop
#  1删除最后一个
# （1）pop() 接收的是索引，无参的情况下删除的是最后一个元素（典型的栈的特性）
# （2）pop() 存在返回值，返回的是删除的元素值
# l.pop() <==> l.pop(-1)
# （3）list 的 append()（添加到尾部），pop()（从尾部弹出），成功地将 list 变成了 stack

l4.pop()
print(l4)
#删除方式二 指定删除  一个一个删除
# （1）remove() 的参数是具体的元素值，而不是索引，
# （2）如果知道索引，如何使用 remove 删除该索引上的元素值，
# >>> l.remove(l[1])
# 1
# 这样做是很大的风险的，因为 list 允许重复，remove() 删除的列表中第一个和参数值相等的元素
l4.remove('g')
print(l4)
#删除方式二 del 全局删除
del l4[2]
print(l4)
del l4[3:10]
print(l4)

'''
#循环
for i in l4:
    print(i)
#range 生成一个列表
for i in range(10):
    print(i)
'''
print('=========')
#排序
print(l4)
# l4.sort()
print(l4)
#原地反转
l4.reverse()
print(l4.reverse())

print('＝＝＝＝＝＝＝＝＝')
# 列表链接
l5 = la+l4
print(l5)
l6 = la.extend(l4)
print(l6)

#复制 完全独立
print("复制")
l6 = l4.copy()
l6[2]='aaa'
print(l4)
print(l6)


la = ['abc',['a','b','c']]
l4 = ['x','y','z',1,2,3,4,5,'e','r','g','h']
l4.extend(la)